package com.hdjd.dao;

import com.hdjd.entities.Account;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface AccountDao {
    int deleteByPrimaryKey(Integer accId);

    int insert(Account record);

    /**
     * 用户注册，新增用户
     * @param account
     * @return
     */
    boolean insertAccount(Account account);

    /**
     * 根据用户名和密码查询用户信息
     * @param accId
     * @param accPwd
     * @return
     */
    Account selectAccountByAccIdAndAccPwd(@Param("accId") Integer accId, @Param("accPwd") String accPwd);

    /**
     * 根据用户名或者学号和用户密码查询用户信息
     * @param stuNo
     * @param accPwd
     * @return
     */
    Account selectAccountByStuNoOrAccNameAndAccPwd(@Param("stuNo") String stuNo,@Param("accName") String accName, @Param("accPwd") String accPwd);

    /**
     * 根据用户id更新用户信息
     * @param account
     * @return
     */
    boolean updateAccountByAccId(Account account);

    /**
     * 根据用户id更新余额
     * @param accId
     * @param moneyNum
     * @return
     */
    boolean updateAccBalanceByAccId(@Param("accId") Integer accId, @Param("moneyNum") Double moneyNum);

    /**
     * 根据用户id查询余额
     * @param accId
     * @return
     */
    Double selectAccBalanceByAccId(@Param("accId") Integer accId);

    /**
     * 根据用户ID查询用户的院校ID
     * @param accId
     * @return
     */
    Integer selectSchoolIdByAccId(@Param("accId") Integer accId);

    /**
     * 根据账户Id查询账户信息
     * @param accId
     * @return
     */
    Account selectAccountByAccId(@Param("accId") Integer accId);

    /**
     * 根据用户名查询用户
     * @param accName
     * @return
     */
    Account selectAccountByAccName(@Param("accName") String accName);

    int updateByPrimaryKeySelective(Account record);

    int updateByPrimaryKey(Account record);

    /**
     * 查询待审核的商家申请
     * @param schoolId
     * @return
     */
    List<Account> businessApplyNeedCheck(@Param("schoolId") Integer schoolId, @Param("startSize") Integer startSize, @Param("pageSize") Integer pageSize);

    /**
     * 统计待审核的商家申请数据笔数
     * @param schoolId
     * @return
     */
    Integer countBusinessApplyNeedCheck(@Param("schoolId") Integer schoolId);

    /**
     * 查询已审核的商家申请
     * @param schoolId
     * @return
     */
    List<Account> businessApplyChecked(@Param("schoolId") Integer schoolId, @Param("startSize") Integer startSize, @Param("pageSize") Integer pageSize);

    /**
     * 统计已审核的商家申请数据笔数
     * @param schoolId
     * @return
     */
    Integer countBusinessApplyChecked(@Param("schoolId") Integer schoolId);

    /**
     * 查询待审核的配送员申请
     * @param schoolId
     * @return
     */
    List<Account> deliveryManApplyNeedCheck(@Param("schoolId") Integer schoolId, @Param("startSize") Integer startSize, @Param("pageSize") Integer pageSize);

    /**
     * 统计待审核的配送员申请数据笔数
     * @param schoolId
     * @returnD
     */
    Integer countDeliveryManApplyNeedCheck(@Param("schoolId") Integer schoolId);

    /**
     * 查询已审核的配送员申请
     * @param schoolId
     * @return
     */
    List<Account> deliveryManApplyChecked(@Param("schoolId") Integer schoolId, @Param("startSize") Integer startSize, @Param("pageSize") Integer pageSize);

    /**
     * 统计已审核的配送员申请数据笔数
     * @param schoolId
     * @returnD
     */
    Integer countDeliveryManApplyChecked(@Param("schoolId") Integer schoolId);
}